package main

import (
	"fmt"
)

type student struct {
	name string
	age  int
}

type teacher struct {
	name string
	age  int
}

func main()  {
	isOk := true
	tall := 182
	var lenghth1 float32 = 10.23
	var lenghth2 float64 = 23.15646
	name := "admin"
	stu1 := student{}
	stu2 := &student{}
	t := teacher{}
	typeJuged(tall)
	typeJuged(lenghth1)
	typeJuged(lenghth2)
	typeJuged(name)
	typeJuged(stu1)
	typeJuged(stu2)
	typeJuged(t)
	typeJuged(isOk, tall, lenghth1, lenghth2, name, stu1, stu2, t)
}

func typeJuged(variable... interface{}){
	for _, v := range variable{
		switch v.(type) {
		case bool:
			fmt.Println("variable is bool type !")
		case int:
			fmt.Println("variable is int type !")
		case string:
			fmt.Println("variable is string type !")
		case float32:
			fmt.Println("variable is float32 type !")
		case float64:
			fmt.Println("variable is float64 type !")
		case map[string]string:
			fmt.Println("variable is map[string]string type !")
		case student:
			fmt.Println("variable is student type !")
		case *student:
			fmt.Println("variable is *student type !")
		default:
			fmt.Println("variable is unknown type !")
		}
	}

}